package com.zijidelu.luframework.application.service;

import com.zijidelu.luframework.base.model.DataModel;
import com.zijidelu.luframework.infrastructure.model.api.PageQuery;
import com.zijidelu.luframework.infrastructure.model.api.PageResponse;

import java.util.Collection;
import java.util.List;

/**
 * AppService 接口。
 *
 * @author ZIJIDELU
 * @date 2024/4/6 23:21
 */
public interface AppService<D extends DataModel> {

    /**
     * 根据ID查询
     *
     * @param id 主键ID
     * @return 响应结果
     */
    D findById(Long id);

    /**
     * 分页查询
     *
     * @param query 分页查询参数
     * @return 分页响应结果
     */
    PageResponse<D> findPage(PageQuery<D> query);

    /**
     * 保存
     *
     * @param request 请求参数
     * @return 是否保存成功
     */
    boolean save(List<D> request);

    /**
     * 更新
     *
     * @param request 请求参数
     * @return 响应结果
     */
    boolean update(List<D> request);

    /**
     * 批量删除
     *
     * @param ids 主键ID列表
     * @return 响应结果
     */
    boolean deleteById(Collection<Long> ids);
}
